home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1996 #5 / Amiga Plus CD - 1996 - No. 5.iso / pd / grafik / tgif / tgif.pl < prev    next >
Text File  |  1996-05-30  |  67KB  |  1,583 lines

  1. %
  2. % Author:      William Chia-Wei Cheng (william@cs.ucla.edu)
  3. %
  4. % Copyright (C) 1992-1993, William Cheng.
  5. %
  6. % Permission limited to the use, copy, modify, and distribute this software
  7. % and its documentation for any purpose is hereby granted by the Author without
  8. % fee, provided that the above copyright notice appear in all copies and
  9. % that both the copyright notice and this permission notice appear in
  10. % supporting documentation, and that the name of the Author not be used
  11. % in advertising or publicity pertaining to distribution of the software
  12. % without specific, written prior permission.  The Author makes no
  13. % representations about the suitability of this software for any purpose.
  14. % It is provided "as is" without express or implied warranty.  All other
  15. % rights (including the right to sell "tgif" and the right to sell derivative
  16. % works of tgif) are reserved by the Author.
  17. %
  18. % THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  19. % INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
  20. % EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  21. % CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
  22. % USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
  23. % OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  24. % PERFORMANCE OF THIS SOFTWARE.
  25. %
  26. % @(#)$Header: /n/opus/u/guest/william/src/tgif/v3/RCS/tgif.pl,v 3.0 1996/05/06 16:12:25 william Exp $
  27. %
  28.  
  29. % 1) Call tgif_clean/0 each time before step (2).
  30. % 2) Consult a '.obj' or a '.sym' file.
  31. % 3) Call tgif_state/2.  This must be called before any other tgif goals
  32. %    are called.
  33. % 4) Trace any other goals.
  34.  
  35. tgif_state(FileVersion,Obj) :- tgif_state(FileVersion,Obj,_).
  36.  
  37. tgif_state(FileVersion,Obj,Parms) :-
  38.     (    var(Obj) -> OutputObj = true,
  39.         current_predicate(state,
  40.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  41.     ;    OutputObj = false
  42.     ),
  43.     Obj = state(_PageStyle,FileVersion,_OrigX,_OrigY,_Zoom,
  44.         _GridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  45.         _LineStyle,_ObjFill,_PenPat,_TextJust,_Font,
  46.         _TextStyle,_TextSize),
  47.     tgif_chk_output(OutputObj,Obj),
  48.     FileVersion =< 3,
  49.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  50.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  51.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  52.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  53.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  54.         text_just=_TextJust,font=_Font,text_style=_TextStyle,
  55.         text_size=_TextSize],
  56.     !, abolish(tgif_file_version/1),
  57.     !, assert(tgif_file_version(FileVersion)).
  58. tgif_state(FileVersion,Obj,Parms) :-
  59.     (    var(Obj) -> OutputObj = true,
  60.         current_predicate(state,
  61.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  62.     ;    OutputObj = false
  63.     ),
  64.     Obj = state(_PageStyle,FileVersion,_OrigX,_OrigY,_Zoom,
  65.         _GridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  66.         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_Font,
  67.         _TextStyle,_TextSize),
  68.     tgif_chk_output(OutputObj,Obj),
  69.     FileVersion =< 7,
  70.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  71.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  72.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  73.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  74.         line_type=_Spline,
  75.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  76.         text_just=_TextJust,font=_Font,text_style=_TextStyle,
  77.         text_size=_TextSize],
  78.     !, abolish(tgif_file_version/1),
  79.     !, assert(tgif_file_version(FileVersion)).
  80. tgif_state(FileVersion,Obj,Parms) :-
  81.     (    var(Obj) -> OutputObj = true,
  82.         current_predicate(state,
  83.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  84.     ;    OutputObj = false
  85.     ),
  86.     Obj = state(_PageStyle,FileVersion,_OrigX,_OrigY,_Zoom,
  87.         _GridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  88.         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_Font,
  89.         _TextStyle,_TextSize,_TextDPI),
  90.     tgif_chk_output(OutputObj,Obj),
  91.     FileVersion =< 8,
  92.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  93.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  94.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  95.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  96.         line_type=_Spline,
  97.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  98.         text_just=_TextJust,font=_Font,text_style=_TextStyle,
  99.         text_size=_TextSize,text_dpi=_TextDPI],
  100.     !, abolish(tgif_file_version/1),
  101.     !, assert(tgif_file_version(FileVersion)).
  102. tgif_state(FileVersion,Obj,Parms) :-
  103.     (    var(Obj) -> OutputObj = true,
  104.         current_predicate(state,
  105.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  106.     ;    OutputObj = false
  107.     ),
  108.     Obj = state(_PageStyle,FileVersion,_OrigX,_OrigY,_Zoom,
  109.         _GridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  110.         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_Font,
  111.         _TextStyle,_TextSize,_TextDPI,_Dash),
  112.     tgif_chk_output(OutputObj,Obj),
  113.     FileVersion =< 11,
  114.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  115.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  116.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  117.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  118.         line_type=_Spline,
  119.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  120.         text_just=_TextJust,font=_Font,text_style=_TextStyle,
  121.         text_size=_TextSize,text_dpi=_TextDPI,line_dash=_Dash],
  122.     !, abolish(tgif_file_version/1),
  123.     !, assert(tgif_file_version(FileVersion)).
  124. tgif_state(FileVersion,Obj,Parms) :-
  125.     (    var(Obj) -> OutputObj = true,
  126.         current_predicate(state,
  127.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  128.     ;    OutputObj = false
  129.     ),
  130.     Obj = state(_PageStyle,FileVersion,_OrigX,_OrigY,_Zoom,
  131.         _EnglishGridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  132.         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_Font,
  133.         _TextStyle,_TextSize,_TextDPI,_Dash,_GridSystem,
  134.         _MetricGridSize),
  135.     tgif_chk_output(OutputObj,Obj),
  136.     FileVersion =< 12,
  137.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  138.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  139.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  140.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  141.         line_type=_Spline,
  142.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  143.         text_just=_TextJust,font=_Font,text_style=_TextStyle,
  144.         text_size=_TextSize,text_dpi=_TextDPI,line_dash=_Dash,
  145.         grid_system=_GridSystem,metric_grid=_MetricGridSize],
  146.     !, abolish(tgif_file_version/1),
  147.     !, assert(tgif_file_version(FileVersion)).
  148. tgif_state(FileVersion,Obj,Parms) :-
  149.     (    var(Obj) -> OutputObj = true,
  150.         current_predicate(state,
  151.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  152.     ;    OutputObj = false
  153.     ),
  154.     Obj = state(_PageStyle,FileVersion,_OrigX,_OrigY,_Zoom,
  155.         _EnglishGridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  156.         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_Font,
  157.         _TextStyle,_TextSize,_TextDPI,_Dash,_GridSystem,
  158.         _MetricGridSize,_TextVSpace),
  159.     tgif_chk_output(OutputObj,Obj),
  160.     FileVersion =< 13,
  161.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  162.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  163.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  164.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  165.         line_type=_Spline,
  166.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  167.         text_just=_TextJust,font=_Font,text_style=_TextStyle,
  168.         text_size=_TextSize,text_dpi=_TextDPI,line_dash=_Dash,
  169.         grid_system=_GridSystem,metric_grid=_MetricGridSize,
  170.         text_v_space=_TextVSpace],
  171.     !, abolish(tgif_file_version/1),
  172.     !, assert(tgif_file_version(FileVersion)).
  173. tgif_state(FileVersion,Obj,Parms) :-
  174.     (    var(Obj) -> OutputObj = true,
  175.         current_predicate(state,
  176.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  177.     ;    OutputObj = false
  178.     ),
  179.     Obj = state(_PageStyle,FileVersion,_PrintMag,_OrigX,_OrigY,_Zoom,
  180.         _EnglishGridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  181.         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_Font,
  182.         _TextStyle,_TextSize,_TextDPI,_Dash,_GridSystem,
  183.         _MetricGridSize,_TextVSpace),
  184.     tgif_chk_output(OutputObj,Obj),
  185.     FileVersion =< 18,
  186.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  187.         print_mag=_PrintMag,
  188.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  189.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  190.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  191.         line_type=_Spline,
  192.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  193.         text_just=_TextJust,font=_Font,text_style=_TextStyle,
  194.         text_size=_TextSize,text_dpi=_TextDPI,line_dash=_Dash,
  195.         grid_system=_GridSystem,metric_grid=_MetricGridSize,
  196.         text_v_space=_TextVSpace],
  197.     !, abolish(tgif_file_version/1),
  198.     !, assert(tgif_file_version(FileVersion)).
  199. tgif_state(FileVersion,Obj,Parms) :-
  200.     (    var(Obj) -> OutputObj = true,
  201.         current_predicate(state,
  202.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  203.     ;    OutputObj = false
  204.     ),
  205.     Obj = state(_PageStyle,FileVersion,_PrintMag,_OrigX,_OrigY,_Zoom,
  206.         _EnglishGridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  207.         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_Font,
  208.         _TextStyle,_TextSize,_TextDPI,_Dash,_GridSystem,
  209.         _MetricGridSize,_TextVSpace,_ZoomIn),
  210.     tgif_chk_output(OutputObj,Obj),
  211.     FileVersion =< 19,
  212.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  213.         print_mag=_PrintMag,
  214.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  215.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  216.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  217.         line_type=_Spline,
  218.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  219.         text_just=_TextJust,font=_Font,text_style=_TextStyle,
  220.         text_size=_TextSize,text_dpi=_TextDPI,line_dash=_Dash,
  221.         grid_system=_GridSystem,metric_grid=_MetricGridSize,
  222.         text_v_space=_TextVSpace,zoom_in=_ZoomIn],
  223.     !, abolish(tgif_file_version/1),
  224.     !, assert(tgif_file_version(FileVersion)).
  225. tgif_state(FileVersion,Obj,Parms) :-
  226.     (    var(Obj) -> OutputObj = true,
  227.         current_predicate(state,
  228.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  229.     ;    OutputObj = false
  230.     ),
  231.     Obj = state(_PageStyle,FileVersion,_PrintMag,_OrigX,_OrigY,_Zoom,
  232.         _EnglishGridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  233.         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_Font,
  234.         _TextStyle,_TextSize,_TextDPI,_Dash,_GridSystem,
  235.         _MetricGridSize,_TextVSpace,_ZoomIn,_GridShown,_MoveMode),
  236.     tgif_chk_output(OutputObj,Obj),
  237.     FileVersion =< 21,
  238.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  239.         print_mag=_PrintMag,
  240.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  241.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  242.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  243.         line_type=_Spline,
  244.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  245.         text_just=_TextJust,font=_Font,text_style=_TextStyle,
  246.         text_size=_TextSize,text_dpi=_TextDPI,line_dash=_Dash,
  247.         grid_system=_GridSystem,metric_grid=_MetricGridSize,
  248.         text_v_space=_TextVSpace,zoom_in=_ZoomIn,grid_shown=_GridShown,
  249.         move_mode=_ModeMode],
  250.     !, abolish(tgif_file_version/1),
  251.     !, assert(tgif_file_version(FileVersion)).
  252. tgif_state(FileVersion,Obj,Parms) :-
  253.     (    var(Obj) -> OutputObj = true,
  254.         current_predicate(state,
  255.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  256.     ;    OutputObj = false
  257.     ),
  258.     Obj = state(_PageStyle,FileVersion,_PrintMag,_OrigX,_OrigY,_Zoom,
  259.         _EnglishGridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  260.         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_Font,
  261.         _TextStyle,_TextSize,_TextDPI,_Dash,_GridSystem,
  262.         _MetricGridSize,_TextVSpace,_ZoomIn,_GridShown,_MoveMode,
  263.         _TextRotate,_RCBoxRadius),
  264.     tgif_chk_output(OutputObj,Obj),
  265.     FileVersion =< 26,
  266.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  267.         print_mag=_PrintMag,
  268.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  269.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  270.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  271.         line_type=_Spline,
  272.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  273.         text_just=_TextJust,font=_Font,text_style=_TextStyle,
  274.         text_size=_TextSize,text_dpi=_TextDPI,line_dash=_Dash,
  275.         grid_system=_GridSystem,metric_grid=_MetricGridSize,
  276.         text_v_space=_TextVSpace,zoom_in=_ZoomIn,grid_shown=_GridShown,
  277.         move_mode=_ModeMode,text_rotate=_TextRotate,
  278.         rcb_radius=_RCBoxRadius],
  279.     !, abolish(tgif_file_version/1),
  280.     !, assert(tgif_file_version(FileVersion)).
  281. tgif_state(FileVersion,Obj,Parms) :-
  282.     (    var(Obj) -> OutputObj = true,
  283.         current_predicate(state,
  284.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  285.     ;    OutputObj = false
  286.     ),
  287.     Obj = state(_PageStyle,FileVersion,_PrintMag,_OrigX,_OrigY,_Zoom,
  288.         _EnglishGridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  289.         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_Font,
  290.         _TextStyle,_TextSize,_TextDPI,_Dash,_GridSystem,
  291.         _MetricGridSize,_TextVSpace,_ZoomIn,_GridShown,_MoveMode,
  292.         _TextRotate,_RCBoxRadius,_UseGray),
  293.     tgif_chk_output(OutputObj,Obj),
  294.     FileVersion =< 27,
  295.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  296.         print_mag=_PrintMag,
  297.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  298.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  299.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  300.         line_type=_Spline,
  301.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  302.         text_just=_TextJust,font=_Font,text_style=_TextStyle,
  303.         text_size=_TextSize,text_dpi=_TextDPI,line_dash=_Dash,
  304.         grid_system=_GridSystem,metric_grid=_MetricGridSize,
  305.         text_v_space=_TextVSpace,zoom_in=_ZoomIn,grid_shown=_GridShown,
  306.         move_mode=_ModeMode,text_rotate=_TextRotate,
  307.         rcb_radius=_RCBoxRadius,use_gray=_UseGray],
  308.     !, abolish(tgif_file_version/1),
  309.     !, assert(tgif_file_version(FileVersion)).
  310. tgif_state(FileVersion,Obj,Parms) :-
  311.     % Mstsuda's Version
  312.     (    var(Obj) -> OutputObj = true,
  313.         current_predicate(state,
  314.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  315.     ;    OutputObj = false
  316.     ),
  317.     Obj = state(_PageStyle,FileVersion,_PrintMag,_OrigX,_OrigY,_Zoom,
  318.         _EnglishGridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  319.         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_Font,
  320.         _TextStyle,_TextSize,_TextDPI,_Dash,_GridSystem,
  321.         _MetricGridSize,_TextVSpace,_ZoomIn,_GridShown,_MoveMode,
  322.         _TextRotate,_RCBoxRadius,_UseGray,_PaperCol,_PaperRow,
  323.         _CurPageNum,_LastPageNum),
  324.     tgif_chk_output(OutputObj,Obj),
  325.     FileVersion =< 28,
  326.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  327.         print_mag=_PrintMag,
  328.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  329.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  330.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  331.         line_type=_Spline,
  332.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  333.         text_just=_TextJust,font=_Font,text_style=_TextStyle,
  334.         text_size=_TextSize,text_dpi=_TextDPI,line_dash=_Dash,
  335.         grid_system=_GridSystem,metric_grid=_MetricGridSize,
  336.         text_v_space=_TextVSpace,zoom_in=_ZoomIn,grid_shown=_GridShown,
  337.         move_mode=_ModeMode,text_rotate=_TextRotate,
  338.         rcb_radius=_RCBoxRadius,use_gray=_UseGray,
  339.         papge_col=_PaperCol,papge_row=_PaperRow,
  340.         cur_page_num=_CurPageNum,last_page_num=_LastPageNum],
  341.     !, abolish(tgif_file_version/1),
  342.     !, assert(tgif_file_version(FileVersion)).
  343. tgif_state(FileVersion,Obj,Parms) :-
  344.     % Mstsuda's Version
  345.     (    var(Obj) -> OutputObj = true,
  346.         current_predicate(state,
  347.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  348.     ;    OutputObj = false
  349.     ),
  350.     Obj = state(_PageStyle,FileVersion,_PrintMag,_OrigX,_OrigY,_Zoom,
  351.         _EnglishGridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  352.         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_Font,
  353.         _TextStyle,_TextSize,_TextDPI,_Dash,_GridSystem,
  354.         _MetricGridSize,_TextVSpace,_ZoomIn,_GridShown,_MoveMode,
  355.         _TextRotate,_RCBoxRadius,_UseGray,_PageLayoutMode,_PageArg1,
  356.         _PageArg2,_PageLineShownInTileMode),
  357.     tgif_chk_output(OutputObj,Obj),
  358.     FileVersion =< 29,
  359.     (    (_PageLayoutMode == 0) -> % stack mode
  360.         _CurPageNum = _PageArg1, _LastPageNum = _PageArg2,
  361.         _PaperRow = 1, _PaperCol = 1
  362.     ;    _PaperCol = _PageArg1, _PaperRow = _PageArg2,
  363.         _CurPageNum = 1, _LastPageNum = 1
  364.     ),
  365.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  366.         print_mag=_PrintMag,
  367.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  368.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  369.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  370.         line_type=_Spline,
  371.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  372.         text_just=_TextJust,font=_Font,text_style=_TextStyle,
  373.         text_size=_TextSize,text_dpi=_TextDPI,line_dash=_Dash,
  374.         grid_system=_GridSystem,metric_grid=_MetricGridSize,
  375.         text_v_space=_TextVSpace,zoom_in=_ZoomIn,grid_shown=_GridShown,
  376.         move_mode=_ModeMode,text_rotate=_TextRotate,
  377.         rcb_radius=_RCBoxRadius,use_gray=_UseGray,
  378.         page_layout_mode=_PageLayoutMode,
  379.         page_line_shown_in_tile_mode=_PageLineShownInTileMode,
  380.         papge_col=_PaperCol,papge_row=_PaperRow,
  381.         cur_page_num=_CurPageNum,last_page_num=_LastPageNum],
  382.     !, abolish(tgif_file_version/1),
  383.     !, assert(tgif_file_version(FileVersion)).
  384. tgif_state(FileVersion,Obj,Parms) :-
  385.     % Mstsuda's Version
  386.     (    var(Obj) -> OutputObj = true,
  387.         current_predicate(state,
  388.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  389.     ;    OutputObj = false
  390.     ),
  391.     Obj = state(_PageStyle,FileVersion,_PrintMag,_OrigX,_OrigY,_Zoom,
  392.         _EnglishGridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  393.         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_FontName,
  394.         _TextStyle,_PointSize,0,_Dash,_GridSystem,
  395.         _MetricGridSize,_TextVSpace,_ZoomIn,_GridShown,_MoveMode,
  396.         _TextRotate,_RCBoxRadius,_UseGray,_PageLayoutMode,_PageArg1,
  397.         _PageArg2,_PageLineShownInTileMode),
  398.     tgif_chk_output(OutputObj,Obj),
  399.     FileVersion =< 30,
  400.     (    (_PageLayoutMode == 0) -> % stack mode
  401.         _CurPageNum = _PageArg1, _LastPageNum = _PageArg2,
  402.         _PaperRow = 1, _PaperCol = 1
  403.     ;    _PaperCol = _PageArg1, _PaperRow = _PageArg2,
  404.         _CurPageNum = 1, _LastPageNum = 1
  405.     ),
  406.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  407.         print_mag=_PrintMag,
  408.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  409.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  410.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  411.         line_type=_Spline,
  412.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  413.         text_just=_TextJust,font_name=_FontName,text_style=_TextStyle,
  414.         point_size=_PointSize,line_dash=_Dash,
  415.         grid_system=_GridSystem,metric_grid=_MetricGridSize,
  416.         text_v_space=_TextVSpace,zoom_in=_ZoomIn,grid_shown=_GridShown,
  417.         move_mode=_ModeMode,text_rotate=_TextRotate,
  418.         rcb_radius=_RCBoxRadius,use_gray=_UseGray,
  419.         page_layout_mode=_PageLayoutMode,
  420.         page_line_shown_in_tile_mode=_PageLineShownInTileMode,
  421.         papge_col=_PaperCol,papge_row=_PaperRow,
  422.         cur_page_num=_CurPageNum,last_page_num=_LastPageNum],
  423.     !, abolish(tgif_file_version/1),
  424.     !, assert(tgif_file_version(FileVersion)).
  425. tgif_state(FileVersion,Obj,Parms) :-
  426.     % Mstsuda's Version
  427.     (    var(Obj) -> OutputObj = true,
  428.         current_predicate(state,
  429.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  430.     ;    OutputObj = false
  431.     ),
  432.     Obj = state(_PageStyle,FileVersion,_PrintMag,_OrigX,_OrigY,_Zoom,
  433.         _EnglishGridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  434.         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_FontName,
  435.         _TextStyle,_PointSize,0,_Dash,_GridSystem,
  436.         _MetricGridSize,_TextVSpace,_ZoomIn,_GridShown,_MoveMode,
  437.         _TextRotate,_RCBoxRadius,_UseGray,_PageLayoutMode,_PageArg1,
  438.         _PageArg2,_PageLineShownInTileMode,_ColorDump),
  439.     tgif_chk_output(OutputObj,Obj),
  440.     FileVersion =< 31,
  441.     (    (_PageLayoutMode == 0) -> % stack mode
  442.         _CurPageNum = _PageArg1, _LastPageNum = _PageArg2,
  443.         _PaperRow = 1, _PaperCol = 1
  444.     ;    _PaperCol = _PageArg1, _PaperRow = _PageArg2,
  445.         _CurPageNum = 1, _LastPageNum = 1
  446.     ),
  447.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  448.         print_mag=_PrintMag,
  449.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  450.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  451.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  452.         line_type=_Spline,
  453.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  454.         text_just=_TextJust,font_name=_FontName,text_style=_TextStyle,
  455.         point_size=_PointSize,line_dash=_Dash,
  456.         grid_system=_GridSystem,metric_grid=_MetricGridSize,
  457.         text_v_space=_TextVSpace,zoom_in=_ZoomIn,grid_shown=_GridShown,
  458.         move_mode=_ModeMode,text_rotate=_TextRotate,
  459.         rcb_radius=_RCBoxRadius,use_gray=_UseGray,
  460.         page_layout_mode=_PageLayoutMode,
  461.         page_line_shown_in_tile_mode=_PageLineShownInTileMode,
  462.         papge_col=_PaperCol,papge_row=_PaperRow,
  463.         cur_page_num=_CurPageNum,last_page_num=_LastPageNum,
  464.         color_dump=_ColorDump],
  465.     !, abolish(tgif_file_version/1),
  466.     !, assert(tgif_file_version(FileVersion)).
  467. tgif_state(FileVersion,Obj,Parms) :-
  468.     % Mstsuda's Version
  469.     (    var(Obj) -> OutputObj = true,
  470.         current_predicate(state,
  471.             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  472.     ;    OutputObj = false
  473.     ),
  474.     Obj = state(_PageStyle,FileVersion,_PrintMag,_OrigX,_OrigY,_Zoom,
  475.         _EnglishGridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  476.         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_FontName,
  477.         _TextStyle,_PointSize,0,_Dash,_GridSystem,
  478.         _MetricGridSize,_TextVSpace,_ZoomIn,_GridShown,_MoveMode,
  479.         _TextRotate,_RCBoxRadius,_UseGray,_PageLayoutMode,_PageArg1,
  480.         _PageArg2,_PageLineShownInTileMode,_ColorDump,
  481.         _OnePageWidth,_OnePageHeight),
  482.     tgif_chk_output(OutputObj,Obj),
  483.     FileVersion >= 32,
  484.     (    (_PageLayoutMode == 0) -> % stack mode
  485.         _CurPageNum = _PageArg1, _LastPageNum = _PageArg2,
  486.         _PaperRow = 1, _PaperCol = 1
  487.     ;    _PaperCol = _PageArg1, _PaperRow = _PageArg2,
  488.         _CurPageNum = 1, _LastPageNum = 1
  489.     ),
  490.     Parms = [page_style=_PageStyle,file_version=FileVersion,
  491.         print_mag=_PrintMag,
  492.         orig_x=_OrigX,orig_y=_OrigY,zoom=_Zoom,
  493.         english_grid_size=_GridSize,snap_on=_Grid,color=_Color,
  494.         h_align=_HoriAlign,v_align=_VertAlign,line_width=_LineWidth,
  495.         line_type=_Spline,
  496.         line_style=_LineStyle,obj_fill=_ObjFill,pen_pat=_PenPat,
  497.         text_just=_TextJust,font_name=_FontName,text_style=_TextStyle,
  498.         point_size=_PointSize,line_dash=_Dash,
  499.         grid_system=_GridSystem,metric_grid=_MetricGridSize,
  500.         text_v_space=_TextVSpace,zoom_in=_ZoomIn,grid_shown=_GridShown,
  501.         move_mode=_ModeMode,text_rotate=_TextRotate,
  502.         rcb_radius=_RCBoxRadius,use_gray=_UseGray,
  503.         page_layout_mode=_PageLayoutMode,
  504.         page_line_shown_in_tile_mode=_PageLineShownInTileMode,
  505.         papge_col=_PaperCol,papge_row=_PaperRow,
  506.         cur_page_num=_CurPageNum,last_page_num=_LastPageNum,
  507.         color_dump=_ColorDump,one_page_width=_OnePageWidth,
  508.         one_page_height=_OnePageHeight],
  509.     !, abolish(tgif_file_version/1),
  510.     !, assert(tgif_file_version(FileVersion)).
  511.  
  512. % --------------------------------------------------------------------- %
  513.  
  514. tgif_text(Obj) :- tgif_text(Obj,_).
  515.  
  516. tgif_text(Obj,Parms) :-
  517.     current_predicate(tgif_file_version,tgif_file_version(_)),
  518.     tgif_file_version(FileVersion),
  519.     FileVersion =< 2, !,
  520.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  521.     Obj = text(_Color,_X,_Y,_Font,_TextStyle,_TextSize,_NumLines,_TextJust,
  522.         StrList),
  523.     tgif_chk_output(OutputObj,Obj),
  524.     Parms = [color=_Color,x=_X,y=_Y,font=_Font,text_style=_TextStyle,
  525.         text_size=_TextSize,num_lines=_NumLines,text_just=_TextJust,
  526.         strs=StrList],
  527.     tgif_strs(StrList).
  528. tgif_text(Obj,Parms) :-
  529.     current_predicate(tgif_file_version,tgif_file_version(_)),
  530.     tgif_file_version(FileVersion),
  531.     FileVersion =< 6, !,
  532.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  533.     Obj = text(_Color,_X,_Y,_Font,_TextStyle,_TextSize,_NumLines,_TextJust,
  534.         _TextRotate,_PenPat,StrList),
  535.     tgif_chk_output(OutputObj,Obj),
  536.     Parms = [color=_Color,x=_X,y=_Y,font=_Font,text_style=_TextStyle,
  537.         text_size=_TextSize,num_lines=_NumLines,text_just=_TextJust,
  538.         text_rotate=_TextRotate,pen_pat=_PenPat,strs=StrList],
  539.     tgif_strs(StrList).
  540. tgif_text(Obj,Parms) :-
  541.     current_predicate(tgif_file_version,tgif_file_version(_)),
  542.     tgif_file_version(FileVersion),
  543.     FileVersion =< 7, !,
  544.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  545.     Obj = text(_Color,_X,_Y,_Font,_TextStyle,_TextSize,_NumLines,_TextJust,
  546.         _TextRotate,_PenPat,_BBoxW,_BBoxH,StrList),
  547.     tgif_chk_output(OutputObj,Obj),
  548.     Parms = [color=_Color,x=_X,y=_Y,font=_Font,text_style=_TextStyle,
  549.         text_size=_TextSize,num_lines=_NumLines,text_just=_TextJust,
  550.         text_rotate=_TextRotate,pen_pat=_PenPat,bbox_w=_BBoxW,
  551.         bbox_h=_BBoxH,strs=StrList],
  552.     tgif_strs(StrList).
  553. tgif_text(Obj,Parms) :-
  554.     current_predicate(tgif_file_version,tgif_file_version(_)),
  555.     tgif_file_version(FileVersion),
  556.     FileVersion =< 9, !,
  557.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  558.     Obj = text(_Color,_X,_Y,_Font,_TextStyle,_TextSize,_NumLines,_TextJust,
  559.         _TextRotate,_PenPat,_BBoxW,_BBoxH,_Id,_TextDPI,StrList),
  560.     tgif_chk_output(OutputObj,Obj),
  561.     Parms = [color=_Color,x=_X,y=_Y,font=_Font,text_style=_TextStyle,
  562.         text_size=_TextSize,num_lines=_NumLines,text_just=_TextJust,
  563.         text_rotate=_TextRotate,pen_pat=_PenPat,bbox_w=_BBoxW,
  564.         bbox_h=_BBoxH,id=_Id,text_dpi=_TextDPI,strs=StrList],
  565.     tgif_strs(StrList).
  566. tgif_text(Obj,Parms) :-
  567.     current_predicate(tgif_file_version,tgif_file_version(_)),
  568.     tgif_file_version(FileVersion),
  569.     FileVersion =< 10, !,
  570.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  571.     Obj = text(_Color,_X,_Y,_Font,_TextStyle,_TextSize,_NumLines,_TextJust,
  572.         _TextRotate,_PenPat,_BBoxW,_BBoxH,_Id,_TextDPI,_Asc,_Des,
  573.         StrList),
  574.     tgif_chk_output(OutputObj,Obj),
  575.     Parms = [color=_Color,x=_X,y=_Y,font=_Font,text_style=_TextStyle,
  576.         text_size=_TextSize,num_lines=_NumLines,text_just=_TextJust,
  577.         text_rotate=_TextRotate,pen_pat=_PenPat,bbox_w=_BBoxW,
  578.         bbox_h=_BBoxH,id=_Id,text_dpi=_TextDPI,asc=_Asc,des=_Des,
  579.         strs=StrList],
  580.     tgif_strs(StrList).
  581. tgif_text(Obj,Parms) :-
  582.     current_predicate(tgif_file_version,tgif_file_version(_)),
  583.     tgif_file_version(FileVersion),
  584.     FileVersion =< 12, !,
  585.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  586.     Obj = text(_Color,_X,_Y,_Font,_TextStyle,_TextSize,_NumLines,_TextJust,
  587.         _TextRotate,_PenPat,_BBoxW,_BBoxH,_Id,_TextDPI,_Asc,_Des,
  588.         _ObjFill,StrList),
  589.     tgif_chk_output(OutputObj,Obj),
  590.     Parms = [color=_Color,x=_X,y=_Y,font=_Font,text_style=_TextStyle,
  591.         text_size=_TextSize,num_lines=_NumLines,text_just=_TextJust,
  592.         text_rotate=_TextRotate,pen_pat=_PenPat,bbox_w=_BBoxW,
  593.         bbox_h=_BBoxH,id=_Id,text_dpi=_TextDPI,asc=_Asc,des=_Des,
  594.         obj_fill=_ObjFill,strs=StrList],
  595.     tgif_strs(StrList).
  596. tgif_text(Obj,Parms) :-
  597.     current_predicate(tgif_file_version,tgif_file_version(_)),
  598.     tgif_file_version(FileVersion),
  599.     FileVersion =< 13, !,
  600.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  601.     Obj = text(_Color,_X,_Y,_Font,_TextStyle,_TextSize,_NumLines,_TextJust,
  602.         _TextRotate,_PenPat,_BBoxW,_BBoxH,_Id,_TextDPI,_Asc,_Des,
  603.         _ObjFill,_VSpace,StrList),
  604.     tgif_chk_output(OutputObj,Obj),
  605.     Parms = [color=_Color,x=_X,y=_Y,font=_Font,text_style=_TextStyle,
  606.         text_size=_TextSize,num_lines=_NumLines,text_just=_TextJust,
  607.         text_rotate=_TextRotate,pen_pat=_PenPat,bbox_w=_BBoxW,
  608.         bbox_h=_BBoxH,id=_Id,text_dpi=_TextDPI,asc=_Asc,des=_Des,
  609.         obj_fill=_ObjFill,v_space=_VSpace,strs=StrList],
  610.     tgif_strs(StrList).
  611. tgif_text(Obj,Parms) :-
  612.     current_predicate(tgif_file_version,tgif_file_version(_)),
  613.     tgif_file_version(FileVersion),
  614.     FileVersion =< 25, !,
  615.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  616.     Obj = text(_Color,_X,_Y,_Font,_TextStyle,_TextSize,_NumLines,_TextJust,
  617.         _TextRotate,_PenPat,_BBoxW,_BBoxH,_Id,_TextDPI,_Asc,_Des,
  618.         _ObjFill,_VSpace,_Rotation,StrList),
  619.     tgif_chk_output(OutputObj,Obj),
  620.     Parms = [color=_Color,x=_X,y=_Y,font=_Font,text_style=_TextStyle,
  621.         text_size=_TextSize,num_lines=_NumLines,text_just=_TextJust,
  622.         text_rotate=_TextRotate,pen_pat=_PenPat,bbox_w=_BBoxW,
  623.         bbox_h=_BBoxH,id=_Id,text_dpi=_TextDPI,asc=_Asc,des=_Des,
  624.         obj_fill=_ObjFill,v_space=_VSpace,rotation=_Rotation,
  625.         strs=StrList],
  626.     tgif_strs(StrList).
  627. tgif_text(Obj,Parms) :-
  628.     current_predicate(tgif_file_version,tgif_file_version(_)),
  629.     tgif_file_version(FileVersion),
  630.     FileVersion =< 29, !,
  631.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  632.     Obj = text(_Color,_X,_Y,_Font,_TextStyle,_TextSize,_NumLines,_TextJust,
  633.         _TextRotate,_PenPat,_BBoxW,_BBoxH,_Id,_TextDPI,_Asc,_Des,
  634.         _ObjFill,_VSpace,_Rotation,_Locked,StrList),
  635.     tgif_chk_output(OutputObj,Obj),
  636.     Parms = [color=_Color,x=_X,y=_Y,font=_Font,text_style=_TextStyle,
  637.         text_size=_TextSize,num_lines=_NumLines,text_just=_TextJust,
  638.         text_rotate=_TextRotate,pen_pat=_PenPat,bbox_w=_BBoxW,
  639.         bbox_h=_BBoxH,id=_Id,text_dpi=_TextDPI,asc=_Asc,des=_Des,
  640.         obj_fill=_ObjFill,v_space=_VSpace,rotation=_Rotation,
  641.         locked=_Locked,strs=StrList],
  642.     tgif_strs(StrList).
  643. tgif_text(Obj,Parms) :-
  644.     current_predicate(tgif_file_version,tgif_file_version(_)),
  645.     tgif_file_version(FileVersion),
  646.     FileVersion =< 31, !,
  647.     % From version 30 on, the PointSize is the actual size;
  648.     %    the TextSize in older versions is a size index.
  649.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  650.     Obj = text(_Color,_X,_Y,_FontName,_TextStyle,_PointSize,_NumLines,
  651.         _TextJust,_TextRotate,_PenPat,_BBoxW,_BBoxH,_Id,0,_Asc,_Des,
  652.         _ObjFill,_VSpace,_Rotation,_Locked,StrList),
  653.     tgif_chk_output(OutputObj,Obj),
  654.     Parms = [color=_Color,x=_X,y=_Y,font_name=_FontName,
  655.         text_style=_TextStyle,point_size=_PointSize,num_lines=_NumLines,
  656.         text_just=_TextJust,text_rotate=_TextRotate,pen_pat=_PenPat,
  657.         bbox_w=_BBoxW,bbox_h=_BBoxH,id=_Id,asc=_Asc,des=_Des,
  658.         obj_fill=_ObjFill,v_space=_VSpace,rotation=_Rotation,
  659.         locked=_Locked,strs=StrList],
  660.     tgif_strs(StrList).
  661. tgif_text(Obj,Parms) :-
  662.     current_predicate(tgif_file_version,tgif_file_version(_)),
  663.     tgif_file_version(FileVersion),
  664.     FileVersion >= 33, !,
  665.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  666.     Obj = text(_Color,_X,_Y,_FontName,_TextStyle,_PointSize,_NumLines,
  667.         _TextJust,_TextRotate,_PenPat,_BBoxW,_BBoxH,_Id,0,_Asc,_Des,
  668.         _ObjFill,_VSpace,_Rotation,_Locked,_UnderlineOn,_Underline,
  669.         _MinLBearing,_MaxRExtra,_DoubleByte,_Direction,
  670.         _CustomFontName,StrList),
  671.     tgif_chk_output(OutputObj,Obj),
  672.     Parms = [color=_Color,x=_X,y=_Y,font_name=_FontName,
  673.         text_style=_TextStyle,point_size=_PointSize,num_lines=_NumLines,
  674.         text_just=_TextJust,text_rotate=_TextRotate,pen_pat=_PenPat,
  675.         bbox_w=_BBoxW,bbox_h=_BBoxH,id=_Id,asc=_Asc,des=_Des,
  676.         obj_fill=_ObjFill,v_space=_VSpace,rotation=_Rotation,
  677.         locked=_Locked,underline_on=_UnderlineOn,underline=_Underline,
  678.         min_lbearing=_MinLBearing,max_rextra=_MaxRExtra,
  679.         double_byte=_DoubleByte,direction=_Direction,
  680.         custom_font_name=_CustomFontName,strs=StrList],
  681.     tgif_strs(StrList).
  682.  
  683. % --------------------------------------------------------------------- %
  684.  
  685. tgif_box(Obj) :- tgif_box(Obj,_).
  686.  
  687. tgif_box(Obj,Parms) :-
  688.     current_predicate(tgif_file_version,tgif_file_version(_)),
  689.     tgif_file_version(FileVersion),
  690.     FileVersion =< 7, !,
  691.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  692.     Obj = box(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_LineWidth,_PenPat),
  693.     tgif_chk_output(OutputObj,Obj),
  694.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  695.         obj_fill=_ObjFill,line_width=_LineWidth,pen_pat=_PenPat].
  696. tgif_box(Obj,Parms) :-
  697.     current_predicate(tgif_file_version,tgif_file_version(_)),
  698.     tgif_file_version(FileVersion),
  699.     FileVersion =< 8, !,
  700.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  701.     Obj = box(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_LineWidth,_PenPat,_Id,
  702.         AttrList),
  703.     tgif_chk_output(OutputObj,Obj),
  704.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  705.         obj_fill=_ObjFill,line_width=_LineWidth,pen_pat=_PenPat,
  706.         id=_Id,attrs=AttrList],
  707.     tgif_attrs(AttrList).
  708. tgif_box(Obj,Parms) :-
  709.     current_predicate(tgif_file_version,tgif_file_version(_)),
  710.     tgif_file_version(FileVersion),
  711.     FileVersion =< 13, !,
  712.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  713.     Obj = box(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_LineWidth,_PenPat,_Id,_Dash,
  714.         AttrList),
  715.     tgif_chk_output(OutputObj,Obj),
  716.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  717.         obj_fill=_ObjFill,line_width=_LineWidth,pen_pat=_PenPat,
  718.         id=_Id,line_dash=_Dash,attrs=AttrList],
  719.     tgif_attrs(AttrList).
  720. tgif_box(Obj,Parms) :-
  721.     current_predicate(tgif_file_version,tgif_file_version(_)),
  722.     tgif_file_version(FileVersion),
  723.     FileVersion =< 25, !,
  724.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  725.     Obj = box(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_LineWidth,_PenPat,_Id,_Dash,
  726.         _Rotation,AttrList),
  727.     tgif_chk_output(OutputObj,Obj),
  728.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  729.         obj_fill=_ObjFill,line_width=_LineWidth,pen_pat=_PenPat,
  730.         id=_Id,line_dash=_Dash,rotation=_Rotation,attrs=AttrList],
  731.     tgif_attrs(AttrList).
  732. tgif_box(Obj,Parms) :-
  733.     current_predicate(tgif_file_version,tgif_file_version(_)),
  734.     tgif_file_version(FileVersion),
  735.     FileVersion >= 26, !,
  736.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  737.     Obj = box(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_LineWidth,_PenPat,_Id,_Dash,
  738.         _Rotation,_Locked,AttrList),
  739.     tgif_chk_output(OutputObj,Obj),
  740.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  741.         obj_fill=_ObjFill,line_width=_LineWidth,pen_pat=_PenPat,
  742.         id=_Id,line_dash=_Dash,rotation=_Rotation,locked=_Locked,
  743.         attrs=AttrList],
  744.     tgif_attrs(AttrList).
  745.  
  746. % --------------------------------------------------------------------- %
  747.  
  748. tgif_oval(Obj) :- tgif_oval(Obj,_).
  749.  
  750. tgif_oval(Obj,Parms) :-
  751.     current_predicate(tgif_file_version,tgif_file_version(_)),
  752.     tgif_file_version(FileVersion),
  753.     FileVersion =< 7, !,
  754.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  755.     Obj = oval(_Color,_LeftTopX,_LeftTopY,_RightBotX,_RightBotY,_ObjFill,
  756.         _LineWidth,_PenPat),
  757.     tgif_chk_output(OutputObj,Obj),
  758.     Parms = [color=_Color,ltx=_LeftTopX,lty=_LeftTopY,rbx=_RightBotX,
  759.         rby=_RightBotY,obj_fill=_ObjFill,line_width=_LineWidth,
  760.         pen_pat=_PenPat].
  761. tgif_oval(Obj,Parms) :-
  762.     current_predicate(tgif_file_version,tgif_file_version(_)),
  763.     tgif_file_version(FileVersion),
  764.     FileVersion =< 8, !,
  765.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  766.     Obj = oval(_Color,_LeftTopX,_LeftTopY,_RightBotX,_RightBotY,_ObjFill,
  767.         _LineWidth,_PenPat,_Id,AttrList),
  768.     tgif_chk_output(OutputObj,Obj),
  769.     Parms = [color=_Color,ltx=_LeftTopX,lty=_LeftTopY,rbx=_RightBotX,
  770.         rby=_RightBotY,obj_fill=_ObjFill,line_width=_LineWidth,
  771.         pen_pat=_PenPat,id=_Id,attrs=AttrList],
  772.     tgif_attrs(AttrList).
  773. tgif_oval(Obj,Parms) :-
  774.     current_predicate(tgif_file_version,tgif_file_version(_)),
  775.     tgif_file_version(FileVersion),
  776.     FileVersion =< 13, !,
  777.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  778.     Obj = oval(_Color,_LeftTopX,_LeftTopY,_RightBotX,_RightBotY,_ObjFill,
  779.         _LineWidth,_PenPat,_Id,_Dash,AttrList),
  780.     tgif_chk_output(OutputObj,Obj),
  781.     Parms = [color=_Color,ltx=_LeftTopX,lty=_LeftTopY,rbx=_RightBotX,
  782.         rby=_RightBotY,obj_fill=_ObjFill,line_width=_LineWidth,
  783.         pen_pat=_PenPat,id=_Id,line_dash=_Dash,attrs=AttrList],
  784.     tgif_attrs(AttrList).
  785. tgif_oval(Obj,Parms) :-
  786.     current_predicate(tgif_file_version,tgif_file_version(_)),
  787.     tgif_file_version(FileVersion),
  788.     FileVersion =< 25, !,
  789.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  790.     Obj = oval(_Color,_LeftTopX,_LeftTopY,_RightBotX,_RightBotY,_ObjFill,
  791.         _LineWidth,_PenPat,_Id,_Dash,_Rotation,AttrList),
  792.     tgif_chk_output(OutputObj,Obj),
  793.     Parms = [color=_Color,ltx=_LeftTopX,lty=_LeftTopY,rbx=_RightBotX,
  794.         rby=_RightBotY,obj_fill=_ObjFill,line_width=_LineWidth,
  795.         pen_pat=_PenPat,id=_Id,line_dash=_Dash,rotation=_Rotation,
  796.         attrs=AttrList],
  797.     tgif_attrs(AttrList).
  798. tgif_oval(Obj,Parms) :-
  799.     current_predicate(tgif_file_version,tgif_file_version(_)),
  800.     tgif_file_version(FileVersion),
  801.     FileVersion >= 26, !,
  802.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  803.     Obj = oval(_Color,_LeftTopX,_LeftTopY,_RightBotX,_RightBotY,_ObjFill,
  804.         _LineWidth,_PenPat,_Id,_Dash,_Rotation,_Locked,AttrList),
  805.     tgif_chk_output(OutputObj,Obj),
  806.     Parms = [color=_Color,ltx=_LeftTopX,lty=_LeftTopY,rbx=_RightBotX,
  807.         rby=_RightBotY,obj_fill=_ObjFill,line_width=_LineWidth,
  808.         pen_pat=_PenPat,id=_Id,line_dash=_Dash,rotation=_Rotation,
  809.         locked=_Locked,attrs=AttrList],
  810.     tgif_attrs(AttrList).
  811.  
  812. % --------------------------------------------------------------------- %
  813.  
  814. tgif_poly(Obj) :- tgif_poly(Obj,_).
  815.  
  816. tgif_poly(Obj,Parms) :-
  817.     current_predicate(tgif_file_version,tgif_file_version(_)),
  818.     tgif_file_version(FileVersion),
  819.     FileVersion =< 3, !,
  820.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  821.     Obj = poly(_Color,_NumVs,_Vs,_LineStyle,_LineWidth,_PenPat,_Id,
  822.         AttrList),
  823.     tgif_chk_output(OutputObj,Obj),
  824.     Parms = [color=_Color,num_vs=_NumVs,vs=_Vs,line_style=_LineStyle,
  825.         line_width=_LineWidth,pen_pat=_PenPat,id=_Id,attrs=AttrList],
  826.     tgif_attrs(AttrList).
  827. tgif_poly(Obj,Parms) :-
  828.     current_predicate(tgif_file_version,tgif_file_version(_)),
  829.     tgif_file_version(FileVersion),
  830.     FileVersion =< 4, !,
  831.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  832.     Obj = poly(_Color,_NumVs,_Vs,_LineStyle,_LineWidth,_PenPat,_Id,_Spline,
  833.         AttrList),
  834.     tgif_chk_output(OutputObj,Obj),
  835.     Parms = [color=_Color,num_vs=_NumVs,vs=_Vs,line_style=_LineStyle,
  836.         line_width=_LineWidth,pen_pat=_PenPat,id=_Id,line_type=_Spilne,
  837.         attrs=AttrList],
  838.     tgif_attrs(AttrList).
  839. tgif_poly(Obj,Parms) :-
  840.     current_predicate(tgif_file_version,tgif_file_version(_)),
  841.     tgif_file_version(FileVersion),
  842.     FileVersion =< 8, !,
  843.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  844.     Obj = poly(_Color,_NumVs,_Vs,_LineStyle,_LineWidth,_PenPat,_Id,_Spline,
  845.         _ObjFill,AttrList),
  846.     tgif_chk_output(OutputObj,Obj),
  847.     Parms = [color=_Color,num_vs=_NumVs,vs=_Vs,line_style=_LineStyle,
  848.         line_width=_LineWidth,pen_pat=_PenPat,id=_Id,line_type=_Spilne,
  849.         obj_fill=_ObjFill,attrs=AttrList],
  850.     tgif_attrs(AttrList).
  851. tgif_poly(Obj,Parms) :-
  852.     current_predicate(tgif_file_version,tgif_file_version(_)),
  853.     tgif_file_version(FileVersion),
  854.     FileVersion =< 13, !,
  855.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  856.     Obj = poly(_Color,_NumVs,_Vs,_LineStyle,_LineWidth,_PenPat,_Id,_Spline,
  857.         _ObjFill,_Dash,AttrList),
  858.     tgif_chk_output(OutputObj,Obj),
  859.     Parms = [color=_Color,num_vs=_NumVs,vs=_Vs,line_style=_LineStyle,
  860.         line_width=_LineWidth,pen_pat=_PenPat,id=_Id,line_type=_Spilne,
  861.         obj_fill=_ObjFill,line_dash=_Dash,attrs=AttrList],
  862.     tgif_attrs(AttrList).
  863. tgif_poly(Obj,Parms) :-
  864.     current_predicate(tgif_file_version,tgif_file_version(_)),
  865.     tgif_file_version(FileVersion),
  866.     FileVersion =< 16, !,
  867.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  868.     Obj = poly(_Color,_NumVs,_Vs,_LineStyle,_LineWidth,_PenPat,_Id,_Spline,
  869.         _ObjFill,_Dash,_Rotation,AttrList),
  870.     tgif_chk_output(OutputObj,Obj),
  871.     Parms = [color=_Color,num_vs=_NumVs,vs=_Vs,line_style=_LineStyle,
  872.         line_width=_LineWidth,pen_pat=_PenPat,id=_Id,line_type=_Spilne,
  873.         obj_fill=_ObjFill,line_dash=_Dash,rotation=_Rotation,
  874.         attrs=AttrList],
  875.     tgif_attrs(AttrList).
  876. tgif_poly(Obj,Parms) :-
  877.     current_predicate(tgif_file_version,tgif_file_version(_)),
  878.     tgif_file_version(FileVersion),
  879.     FileVersion =< 25, !,
  880.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  881.     Obj = poly(_Color,_NumVs,_Vs,_LineStyle,_LineWidth,_PenPat,_Id,_Spline,
  882.         _ObjFill,_Dash,_Rotation,_ArrowHeadW,_ArrowHeadH,AttrList),
  883.     tgif_chk_output(OutputObj,Obj),
  884.     Parms = [color=_Color,num_vs=_NumVs,vs=_Vs,line_style=_LineStyle,
  885.         line_width=_LineWidth,pen_pat=_PenPat,id=_Id,line_type=_Spilne,
  886.         obj_fill=_ObjFill,line_dash=_Dash,rotation=_Rotation,
  887.         arrow_head_w=_ArrowHeadW,arrow_head_h=_ArrowHeadH,
  888.         attrs=AttrList],
  889.     tgif_attrs(AttrList).
  890. tgif_poly(Obj,Parms) :-
  891.     current_predicate(tgif_file_version,tgif_file_version(_)),
  892.     tgif_file_version(FileVersion),
  893.     FileVersion =< 30, !,
  894.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  895.     Obj = poly(_Color,_NumVs,_Vs,_LineStyle,_LineWidth,_PenPat,_Id,_Spline,
  896.         _ObjFill,_Dash,_Rotation,_ArrowHeadW,_ArrowHeadH,_Locked,
  897.         AttrList),
  898.     tgif_chk_output(OutputObj,Obj),
  899.     Parms = [color=_Color,num_vs=_NumVs,vs=_Vs,line_style=_LineStyle,
  900.         line_width=_LineWidth,pen_pat=_PenPat,id=_Id,line_type=_Spilne,
  901.         obj_fill=_ObjFill,line_dash=_Dash,rotation=_Rotation,
  902.         arrow_head_w=_ArrowHeadW,arrow_head_h=_ArrowHeadH,
  903.         locked=_Locked,attrs=AttrList],
  904.     tgif_attrs(AttrList).
  905. tgif_poly(Obj,Parms) :-
  906.     current_predicate(tgif_file_version,tgif_file_version(_)),
  907.     tgif_file_version(FileVersion),
  908.     FileVersion >= 31, !,
  909.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  910.     Obj = poly(_Color,_NumVs,_Vs,_LineStyle,_LineWidth,_PenPat,_Id,_Spline,
  911.         _ObjFill,_Dash,_Rotation,_ArrowHeadW,_ArrowHeadH,_Locked,
  912.         _SmoothSpecStr,AttrList),
  913.     tgif_chk_output(OutputObj,Obj),
  914.     Parms = [color=_Color,num_vs=_NumVs,vs=_Vs,line_style=_LineStyle,
  915.         line_width=_LineWidth,pen_pat=_PenPat,id=_Id,line_type=_Spilne,
  916.         obj_fill=_ObjFill,line_dash=_Dash,rotation=_Rotation,
  917.         arrow_head_w=_ArrowHeadW,arrow_head_h=_ArrowHeadH,
  918.         locked=_Locked,smooth_spec=_SmoothSpecStr,attrs=AttrList],
  919.     tgif_attrs(AttrList).
  920.  
  921. % --------------------------------------------------------------------- %
  922.  
  923. tgif_polygon(Obj) :- tgif_polygon(Obj,_).
  924.  
  925. tgif_polygon(Obj,Parms) :-
  926.     current_predicate(tgif_file_version,tgif_file_version(_)),
  927.     tgif_file_version(FileVersion),
  928.     FileVersion =< 3, !,
  929.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  930.     Obj = polygon(_Color,_NumVs,_Vs,_ObjFill,_LineWidth,_PenPat),
  931.     tgif_chk_output(OutputObj,Obj),
  932.     Parms = [color=_Color,num_vs=_NumVs,vs=_Vs,obj_fill=_ObjFill,
  933.         line_width=_LineWidth,pen_pat=_PenPat].
  934. tgif_polygon(Obj,Parms) :-
  935.     current_predicate(tgif_file_version,tgif_file_version(_)),
  936.     tgif_file_version(FileVersion),
  937.     FileVersion =< 7, !,
  938.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  939.     Obj = polygon(_Color,_NumVs,_Vs,_ObjFill,_LineWidth,_PenPat,_Spline),
  940.     tgif_chk_output(OutputObj,Obj),
  941.     Parms = [color=_Color,num_vs=_NumVs,vs=_Vs,obj_fill=_ObjFill,
  942.         line_width=_LineWidth,pen_pat=_PenPat,line_type=_Spline].
  943. tgif_polygon(Obj,Parms) :-
  944.     current_predicate(tgif_file_version,tgif_file_version(_)),
  945.     tgif_file_version(FileVersion),
  946.     FileVersion =< 8, !,
  947.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  948.     Obj = polygon(_Color,_NumVs,_Vs,_ObjFill,_LineWidth,_PenPat,_Spline,
  949.         _Id,AttrList),
  950.     tgif_chk_output(OutputObj,Obj),
  951.     Parms = [color=_Color,num_vs=_NumVs,vs=_Vs,obj_fill=_ObjFill,
  952.         line_width=_LineWidth,pen_pat=_PenPat,line_type=_Spline,
  953.         id=_Id,attrs=AttrList],
  954.     tgif_attrs(AttrList).
  955. tgif_polygon(Obj,Parms) :-
  956.     current_predicate(tgif_file_version,tgif_file_version(_)),
  957.     tgif_file_version(FileVersion),
  958.     FileVersion =< 13, !,
  959.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  960.     Obj = polygon(_Color,_NumVs,_Vs,_ObjFill,_LineWidth,_PenPat,_Spline,
  961.         _Id,_Dash,AttrList),
  962.     tgif_chk_output(OutputObj,Obj),
  963.     Parms = [color=_Color,num_vs=_NumVs,vs=_Vs,obj_fill=_ObjFill,
  964.         line_width=_LineWidth,pen_pat=_PenPat,line_type=_Spline,
  965.         id=_Id,line_dash=_Dash,attrs=AttrList],
  966.     tgif_attrs(AttrList).
  967. tgif_polygon(Obj,Parms) :-
  968.     current_predicate(tgif_file_version,tgif_file_version(_)),
  969.     tgif_file_version(FileVersion),
  970.     FileVersion =< 25, !,
  971.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  972.     Obj = polygon(_Color,_NumVs,_Vs,_ObjFill,_LineWidth,_PenPat,_Spline,
  973.         _Id,_Dash,_Rotation,AttrList),
  974.     tgif_chk_output(OutputObj,Obj),
  975.     Parms = [color=_Color,num_vs=_NumVs,vs=_Vs,obj_fill=_ObjFill,
  976.         line_width=_LineWidth,pen_pat=_PenPat,line_type=_Spline,
  977.         id=_Id,line_dash=_Dash,rotation=_Rotation,attrs=AttrList],
  978.     tgif_attrs(AttrList).
  979. tgif_polygon(Obj,Parms) :-
  980.     current_predicate(tgif_file_version,tgif_file_version(_)),
  981.     tgif_file_version(FileVersion),
  982.     FileVersion =< 30, !,
  983.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  984.     Obj = polygon(_Color,_NumVs,_Vs,_ObjFill,_LineWidth,_PenPat,_Spline,
  985.         _Id,_Dash,_Rotation,_Locked,AttrList),
  986.     tgif_chk_output(OutputObj,Obj),
  987.     Parms = [color=_Color,num_vs=_NumVs,vs=_Vs,obj_fill=_ObjFill,
  988.         line_width=_LineWidth,pen_pat=_PenPat,line_type=_Spline,
  989.         id=_Id,line_dash=_Dash,rotation=_Rotation,locked=_Locked,
  990.         attrs=AttrList],
  991.     tgif_attrs(AttrList).
  992. tgif_polygon(Obj,Parms) :-
  993.     current_predicate(tgif_file_version,tgif_file_version(_)),
  994.     tgif_file_version(FileVersion),
  995.     FileVersion >= 31, !,
  996.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  997.     Obj = polygon(_Color,_NumVs,_Vs,_ObjFill,_LineWidth,_PenPat,_Spline,
  998.         _Id,_Dash,_Rotation,_Locked,_SmoothSpecStr,AttrList),
  999.     tgif_chk_output(OutputObj,Obj),
  1000.     Parms = [color=_Color,num_vs=_NumVs,vs=_Vs,obj_fill=_ObjFill,
  1001.         line_width=_LineWidth,pen_pat=_PenPat,line_type=_Spline,
  1002.         id=_Id,line_dash=_Dash,rotation=_Rotation,locked=_Locked,
  1003.         smooth_spec=_SmoothSpecStr,attrs=AttrList],
  1004.     tgif_attrs(AttrList).
  1005.  
  1006. % --------------------------------------------------------------------- %
  1007.  
  1008. tgif_rcbox(Obj) :- tgif_rcbox(Obj,_).
  1009.  
  1010. tgif_rcbox(Obj,Parms) :-
  1011.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1012.     tgif_file_version(FileVersion),
  1013.     FileVersion =< 13, !,
  1014.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1015.     Obj = rcbox(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_LineWidth,_PenPat,_Dash,
  1016.         _Radius,_Id,AttrList),
  1017.     tgif_chk_output(OutputObj,Obj),
  1018.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1019.         obj_fill=_ObjFill,line_width=_LineWidth,pen_pat=_PenPat,
  1020.         line_dash=_Dash,radius=_Radius,id=_Id,attrs=AttrList],
  1021.     tgif_attrs(AttrList).
  1022. tgif_rcbox(Obj,Parms) :-
  1023.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1024.     tgif_file_version(FileVersion),
  1025.     FileVersion =< 25, !,
  1026.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1027.     Obj = rcbox(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_LineWidth,_PenPat,_Dash,
  1028.         _Radius,_Id,_Rotation,AttrList),
  1029.     tgif_chk_output(OutputObj,Obj),
  1030.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1031.         obj_fill=_ObjFill,line_width=_LineWidth,pen_pat=_PenPat,
  1032.         line_dash=_Dash,radius=_Radius,id=_Id,rotation=_Rotation,
  1033.         attrs=AttrList],
  1034.     tgif_attrs(AttrList).
  1035. tgif_rcbox(Obj,Parms) :-
  1036.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1037.     tgif_file_version(FileVersion),
  1038.     FileVersion >= 26, !,
  1039.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1040.     Obj = rcbox(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_LineWidth,_PenPat,_Dash,
  1041.         _Radius,_Id,_Rotation,_Locked,AttrList),
  1042.     tgif_chk_output(OutputObj,Obj),
  1043.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1044.         obj_fill=_ObjFill,line_width=_LineWidth,pen_pat=_PenPat,
  1045.         line_dash=_Dash,radius=_Radius,id=_Id,rotation=_Rotation,
  1046.         locked=_Locked,attrs=AttrList],
  1047.     tgif_attrs(AttrList).
  1048.  
  1049. % --------------------------------------------------------------------- %
  1050.  
  1051. tgif_arc(Obj) :- tgif_arc(Obj,_).
  1052.  
  1053. tgif_arc(Obj,Parms) :-
  1054.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1055.     tgif_file_version(FileVersion),
  1056.     FileVersion =< 13, !,
  1057.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1058.     Obj = arc(_Color,_ObjFill,_LineWidth,_PenPat,_Dash,_LtX,_LtY,_Xc,_Yc,
  1059.         _X1,_Y1,_X2,_Y2,_Dir,_W,_H,_Angle1,_Angle2,_Id,AttrList),
  1060.     tgif_chk_output(OutputObj,Obj),
  1061.     Parms = [color=_Color,obj_fill=_ObjFill,line_width=_LineWidth,
  1062.         pen_pat=_PenPat,line_dash=_Dash,ltx=_LtX,lty=_LtY,
  1063.         xc=_Xc,yc=_Yc,x1=_X1,y1=_Y1,x2=_X2,y2=_Y2,clock_wise=_Dir,
  1064.         major_axis=_W,minor_axis_H,angle1=_Angle1,angle2=_Angle2,
  1065.         id=_Id,attrs=AttrList],
  1066.     tgif_attrs(AttrList).
  1067. tgif_arc(Obj,Parms) :-
  1068.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1069.     tgif_file_version(FileVersion),
  1070.     FileVersion =< 15, !,
  1071.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1072.     Obj = arc(_Color,_ObjFill,_LineWidth,_PenPat,_Dash,_LtX,_LtY,_Xc,_Yc,
  1073.         _X1,_Y1,_X2,_Y2,_Dir,_W,_H,_Angle1,_Angle2,_Id,_Rotation,
  1074.         AttrList),
  1075.     tgif_chk_output(OutputObj,Obj),
  1076.     Parms = [color=_Color,obj_fill=_ObjFill,line_width=_LineWidth,
  1077.         pen_pat=_PenPat,line_dash=_Dash,ltx=_LtX,lty=_LtY,
  1078.         xc=_Xc,yc=_Yc,x1=_X1,y1=_Y1,x2=_X2,y2=_Y2,clock_wise=_Dir,
  1079.         major_axis=_W,minor_axis_H,angle1=_Angle1,angle2=_Angle2,
  1080.         id=_Id,rotation=_Rotation,attrs=AttrList],
  1081.     tgif_attrs(AttrList).
  1082. tgif_arc(Obj,Parms) :-
  1083.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1084.     tgif_file_version(FileVersion),
  1085.     FileVersion =< 16, !,
  1086.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1087.     Obj = arc(_Color,_ObjFill,_LineWidth,_PenPat,_Dash,_LtX,_LtY,_Xc,_Yc,
  1088.         _X1,_Y1,_X2,_Y2,_Dir,_W,_H,_Angle1,_Angle2,_Id,_Rotation,
  1089.         _Style,AttrList),
  1090.     tgif_chk_output(OutputObj,Obj),
  1091.     Parms = [color=_Color,obj_fill=_ObjFill,line_width=_LineWidth,
  1092.         pen_pat=_PenPat,line_dash=_Dash,ltx=_LtX,lty=_LtY,
  1093.         xc=_Xc,yc=_Yc,x1=_X1,y1=_Y1,x2=_X2,y2=_Y2,clock_wise=_Dir,
  1094.         major_axis=_W,minor_axis_H,angle1=_Angle1,angle2=_Angle2,
  1095.         id=_Id,rotation=_Rotation,line_style=_Style,attrs=AttrList],
  1096.     tgif_attrs(AttrList).
  1097. tgif_arc(Obj,Parms) :-
  1098.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1099.     tgif_file_version(FileVersion),
  1100.     FileVersion =< 25, !,
  1101.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1102.     Obj = arc(_Color,_ObjFill,_LineWidth,_PenPat,_Dash,_LtX,_LtY,_Xc,_Yc,
  1103.         _X1,_Y1,_X2,_Y2,_Dir,_W,_H,_Angle1,_Angle2,_Id,_Rotation,
  1104.         _Style,_ArrowHeadW,_ArrowHeadH,AttrList),
  1105.     tgif_chk_output(OutputObj,Obj),
  1106.     Parms = [color=_Color,obj_fill=_ObjFill,line_width=_LineWidth,
  1107.         pen_pat=_PenPat,line_dash=_Dash,ltx=_LtX,lty=_LtY,
  1108.         xc=_Xc,yc=_Yc,x1=_X1,y1=_Y1,x2=_X2,y2=_Y2,clock_wise=_Dir,
  1109.         major_axis=_W,minor_axis_H,angle1=_Angle1,angle2=_Angle2,
  1110.         id=_Id,rotation=_Rotation,line_style=_Style,
  1111.         arrow_head_w=_ArrowHeadW,arrow_head_h=_ArrowHeadH,
  1112.         attrs=AttrList],
  1113.     tgif_attrs(AttrList).
  1114. tgif_arc(Obj,Parms) :-
  1115.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1116.     tgif_file_version(FileVersion),
  1117.     FileVersion >= 26, !,
  1118.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1119.     Obj = arc(_Color,_ObjFill,_LineWidth,_PenPat,_Dash,_LtX,_LtY,_Xc,_Yc,
  1120.         _X1,_Y1,_X2,_Y2,_Dir,_W,_H,_Angle1,_Angle2,_Id,_Rotation,
  1121.         _Style,_ArrowHeadW,_ArrowHeadH,_Locked,AttrList),
  1122.     tgif_chk_output(OutputObj,Obj),
  1123.     Parms = [color=_Color,obj_fill=_ObjFill,line_width=_LineWidth,
  1124.         pen_pat=_PenPat,line_dash=_Dash,ltx=_LtX,lty=_LtY,
  1125.         xc=_Xc,yc=_Yc,x1=_X1,y1=_Y1,x2=_X2,y2=_Y2,clock_wise=_Dir,
  1126.         major_axis=_W,minor_axis_H,angle1=_Angle1,angle2=_Angle2,
  1127.         id=_Id,rotation=_Rotation,line_style=_Style,
  1128.         arrow_head_w=_ArrowHeadW,arrow_head_h=_ArrowHeadH,
  1129.         locked=_Locked,attrs=AttrList],
  1130.     tgif_attrs(AttrList).
  1131.  
  1132. % --------------------------------------------------------------------- %
  1133.  
  1134. tgif_xbm(Obj) :- tgif_xbm(Obj,_).
  1135.  
  1136. tgif_xbm(Obj,Parms) :-
  1137.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1138.     tgif_file_version(FileVersion),
  1139.     FileVersion =< 13, !,
  1140.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1141.     Obj = xbm(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_Id,_BitmapStr,AttrList),
  1142.     tgif_chk_output(OutputObj,Obj),
  1143.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,obj_fill=_ObjFill,
  1144.         id=_Id,xbm_str=_BitmapStr,attrs=AttrList],
  1145.     tgif_attrs(AttrList).
  1146. tgif_xbm(Obj,Parms) :-
  1147.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1148.     tgif_file_version(FileVersion),
  1149.     FileVersion =< 22, !,
  1150.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1151.     Obj = xbm(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_Id,_Rotation,_BitmapStr,
  1152.         AttrList),
  1153.     tgif_chk_output(OutputObj,Obj),
  1154.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,obj_fill=_ObjFill,
  1155.         id=_Id,rotation=_Rotation,xbm_str=_BitmapStr,attrs=AttrList],
  1156.     tgif_attrs(AttrList).
  1157. tgif_xbm(Obj,Parms) :-
  1158.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1159.     tgif_file_version(FileVersion),
  1160.     FileVersion =< 23, !,
  1161.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1162.     Obj = xbm(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_Id,_Rotation,_ImageW,_ImageH,
  1163.         _Rotate,_Flip,_BitmapStr,AttrList),
  1164.     tgif_chk_output(OutputObj,Obj),
  1165.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,obj_fill=_ObjFill,
  1166.         id=_Id,rotation=_Rotation,image_w=_ImageW,image_h=_ImageH,
  1167.         rotate=_Rotate,flip=_Flip,xbm_str=_BitmapStr,attrs=AttrList],
  1168.     tgif_attrs(AttrList).
  1169. tgif_xbm(Obj,Parms) :-
  1170.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1171.     tgif_file_version(FileVersion),
  1172.     FileVersion =< 25, !,
  1173.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1174.     (    _RealType = 0, _NoBitmap = 0,
  1175.         Obj = xbm(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_Id,_Rotation,
  1176.             _ImageW,_ImageH,_Rotate,_Flip,_RealType,_LLX,_LLY,
  1177.             _URX,_URY,_NoBitmap,_Date,_File,_BitmapStr,AttrList),
  1178.         tgif_chk_output(OutputObj,Obj),
  1179.         Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1180.             obj_fill=_ObjFill,id=_Id,rotation=_Rotation,
  1181.             image_w=_ImageW,image_h=_ImageH,rotate=_Rotate,
  1182.             flip=_Flip,real_type='xbm',llx=_LLX,lly=_LLY,
  1183.             urx=_URX,ury=_URY,no_bitmap=_NoBitmap,
  1184.             xbm_str=_BitmapStr,attrs=AttrList]
  1185.     |    _RealType = 1, _NoBitmap = 0,
  1186.         Obj = xbm(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_Id,_Rotation,
  1187.             _ImageW,_ImageH,_Rotate,_Flip,_RealType,_LLX,_LLY,
  1188.             _URX,_URY,_NoBitmap,_Date,_File,_BitmapStr,AttrList),
  1189.         tgif_chk_output(OutputObj,Obj),
  1190.         Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1191.             obj_fill=_ObjFill,id=_Id,rotation=_Rotation,
  1192.             image_w=_ImageW,image_h=_ImageH,rotate=_Rotate,
  1193.             flip=_Flip,real_type='eps',llx=_LLX,lly=_LLY,
  1194.             urx=_URX,ury=_URY,no_bitmap=_NoBitmap,
  1195.             date=_Date,file=_File,xbm_str=_BitmapStr,attrs=AttrList]
  1196.     |    _RealType = 1, _NoBitmap = 1,
  1197.         Obj = xbm(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_Id,_Rotation,
  1198.             _ImageW,_ImageH,_Rotate,_Flip,_RealType,_LLX,_LLY,
  1199.             _URX,_URY,_NoBitmap,_Date,_File,AttrList),
  1200.         tgif_chk_output(OutputObj,Obj),
  1201.         Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1202.             obj_fill=_ObjFill,id=_Id,rotation=_Rotation,
  1203.             image_w=_ImageW,image_h=_ImageH,rotate=_Rotate,
  1204.             flip=_Flip,real_type='eps',llx=_LLX,lly=_LLY,
  1205.             urx=_URX,ury=_URY,no_bitmap=_NoBitmap,
  1206.             date=_Date,file=_File,attrs=AttrList]
  1207.     ),
  1208.     tgif_attrs(AttrList).
  1209. tgif_xbm(Obj,Parms) :-
  1210.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1211.     tgif_file_version(FileVersion),
  1212.     FileVersion =< 28, !,
  1213.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1214.     (    _RealType = 0, _NoBitmap = 0,
  1215.         Obj = xbm(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_Id,_Rotation,
  1216.             _ImageW,_ImageH,_Rotate,_Flip,_RealType,_LLX,_LLY,
  1217.             _URX,_URY,_NoBitmap,_Locked,_Date,_File,_BitmapStr,
  1218.             AttrList),
  1219.         tgif_chk_output(OutputObj,Obj),
  1220.         Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1221.             obj_fill=_ObjFill,id=_Id,rotation=_Rotation,
  1222.             image_w=_ImageW,image_h=_ImageH,rotate=_Rotate,
  1223.             flip=_Flip,real_type='xbm',llx=_LLX,lly=_LLY,
  1224.             urx=_URX,ury=_URY,no_bitmap=_NoBitmap,locked=_Locked,
  1225.             date=_Date,file=_File,xbm_str=_BitmapStr,attrs=AttrList]
  1226.     |    _RealType = 1, _NoBitmap = 0,
  1227.         Obj = xbm(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_Id,_Rotation,
  1228.             _ImageW,_ImageH,_Rotate,_Flip,_RealType,_LLX,_LLY,
  1229.             _URX,_URY,_NoBitmap,_Locked,_Date,_File,_BitmapStr,
  1230.             AttrList),
  1231.         tgif_chk_output(OutputObj,Obj),
  1232.         Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1233.             obj_fill=_ObjFill,id=_Id,rotation=_Rotation,
  1234.             image_w=_ImageW,image_h=_ImageH,rotate=_Rotate,
  1235.             flip=_Flip,real_type='eps',llx=_LLX,lly=_LLY,
  1236.             urx=_URX,ury=_URY,no_bitmap=_NoBitmap,locked=_Locked,
  1237.             date=_Date,file=_File,xbm_str=_BitmapStr,attrs=AttrList]
  1238.     |    _RealType = 1, _NoBitmap = 1,
  1239.         Obj = xbm(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_Id,_Rotation,
  1240.             _ImageW,_ImageH,_Rotate,_Flip,_RealType,_LLX,_LLY,
  1241.             _URX,_URY,_NoBitmap,_Locked,_Date,_File,AttrList),
  1242.         tgif_chk_output(OutputObj,Obj),
  1243.         Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1244.             obj_fill=_ObjFill,id=_Id,rotation=_Rotation,
  1245.             image_w=_ImageW,image_h=_ImageH,rotate=_Rotate,
  1246.             flip=_Flip,real_type='eps',llx=_LLX,lly=_LLY,
  1247.             urx=_URX,ury=_URY,no_bitmap=_NoBitmap,locked=_Locked,
  1248.             date=_Date,file=_File,attrs=AttrList]
  1249.     ),
  1250.     tgif_attrs(AttrList).
  1251. tgif_xbm(Obj,Parms) :-
  1252.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1253.     tgif_file_version(FileVersion),
  1254.     FileVersion >= 29, !,
  1255.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1256.     (    _RealType = 0, _NoBitmap = 0, _SaveEPSF = 0,
  1257.         Obj = xbm(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_Id,_Rotation,
  1258.             _ImageW,_ImageH,_Rotate,_Flip,_RealType,_LLX,_LLY,
  1259.             _URX,_URY,_NoBitmap,_Locked,_SaveEPSF,
  1260.             _Date,_File,_BitmapStr,AttrList),
  1261.         tgif_chk_output(OutputObj,Obj),
  1262.         Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1263.             obj_fill=_ObjFill,id=_Id,rotation=_Rotation,
  1264.             image_w=_ImageW,image_h=_ImageH,rotate=_Rotate,
  1265.             flip=_Flip,real_type='xbm',llx=_LLX,lly=_LLY,
  1266.             urx=_URX,ury=_URY,no_bitmap=_NoBitmap,locked=_Locked,
  1267.             save_epsf=_SaveEPSF,
  1268.             date=_Date,file=_File,xbm_str=_BitmapStr,attrs=AttrList]
  1269.     |    _RealType = 1, _NoBitmap = 0, _SaveEPSF = 0,
  1270.         Obj = xbm(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_Id,_Rotation,
  1271.             _ImageW,_ImageH,_Rotate,_Flip,_RealType,_LLX,_LLY,
  1272.             _URX,_URY,_NoBitmap,_Locked,_SaveEPSF,
  1273.             _Date,_File,_BitmapStr,AttrList),
  1274.         tgif_chk_output(OutputObj,Obj),
  1275.         Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1276.             obj_fill=_ObjFill,id=_Id,rotation=_Rotation,
  1277.             image_w=_ImageW,image_h=_ImageH,rotate=_Rotate,
  1278.             flip=_Flip,real_type='eps',llx=_LLX,lly=_LLY,
  1279.             urx=_URX,ury=_URY,no_bitmap=_NoBitmap,locked=_Locked,
  1280.             save_epsf=_SaveEPSF,
  1281.             date=_Date,file=_File,xbm_str=_BitmapStr,attrs=AttrList]
  1282.     |    _RealType = 1, _NoBitmap = 1, _SaveEPSF = 0,
  1283.         Obj = xbm(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_Id,_Rotation,
  1284.             _ImageW,_ImageH,_Rotate,_Flip,_RealType,_LLX,_LLY,
  1285.             _URX,_URY,_NoBitmap,_Locked,_SaveEPSF,
  1286.             _Date,_File,AttrList),
  1287.         tgif_chk_output(OutputObj,Obj),
  1288.         Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1289.             obj_fill=_ObjFill,id=_Id,rotation=_Rotation,
  1290.             image_w=_ImageW,image_h=_ImageH,rotate=_Rotate,
  1291.             flip=_Flip,real_type='eps',llx=_LLX,lly=_LLY,
  1292.             urx=_URX,ury=_URY,no_bitmap=_NoBitmap,locked=_Locked,
  1293.             save_epsf=_SaveEPSF,
  1294.             date=_Date,file=_File,attrs=AttrList]
  1295.     |    _RealType = 1, _NoBitmap = 0, _SaveEPSF = 1,
  1296.         Obj = xbm(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_Id,_Rotation,
  1297.             _ImageW,_ImageH,_Rotate,_Flip,_RealType,_LLX,_LLY,
  1298.             _URX,_URY,_NoBitmap,_Locked,_SaveEPSF,
  1299.             _Date,_File,_NumEPSFLines,_EPSFLines,_BitmapStr,
  1300.             AttrList),
  1301.         tgif_chk_output(OutputObj,Obj),
  1302.         length(_EPSFLines,_NumEPSFLines),
  1303.         Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1304.             obj_fill=_ObjFill,id=_Id,rotation=_Rotation,
  1305.             image_w=_ImageW,image_h=_ImageH,rotate=_Rotate,
  1306.             flip=_Flip,real_type='eps',llx=_LLX,lly=_LLY,
  1307.             urx=_URX,ury=_URY,no_bitmap=_NoBitmap,locked=_Locked,
  1308.             save_epsf=_SaveEPSF,num_epsf_lines=_NumEPSFLines,
  1309.             epsf_lines=_EPSFLines,date=_Date,file=_File,
  1310.             xbm_str=_BitmapStr,attrs=AttrList]
  1311.     ),
  1312.     tgif_attrs(AttrList).
  1313.  
  1314. % --------------------------------------------------------------------- %
  1315.  
  1316. tgif_xpm(Obj) :- tgif_xpm(Obj,_).
  1317.  
  1318. tgif_xpm(Obj,Parms) :-
  1319.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1320.     tgif_file_version(FileVersion),
  1321.     FileVersion =< 13, !,
  1322.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1323.     Obj = xpm(_Color,_X1,_Y1,_X2,_Y2,_UnUsedObjFill,_NumColors,_Id,
  1324.         ColorNames,Pixels,AttrList),
  1325.     tgif_chk_output(OutputObj,Obj),
  1326.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1327.         obj_fill=_UnUsedObjFill,num_colors=_NumColors,id=_Id,
  1328.         color_names=ColorNames,pixels=Pixels,attrs=AttrList],
  1329.     tgif_color_info(ColorNames),
  1330.     tgif_pixels(Pixels),
  1331.     tgif_attrs(AttrList).
  1332. tgif_xpm(Obj,Parms) :-
  1333.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1334.     tgif_file_version(FileVersion),
  1335.     FileVersion =< 14, !,
  1336.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1337.     Obj = xpm(_Color,_X1,_Y1,_X2,_Y2,_UnUsedObjFill,_NumColors,_Id,
  1338.         _Rotation,ColorNames,Pixels,AttrList),
  1339.     tgif_chk_output(OutputObj,Obj),
  1340.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1341.         obj_fill=_UnUsedObjFill,num_colors=_NumColors,id=_Id,
  1342.         rotation=_Rotation,color_names=ColorNames,pixels=Pixels,
  1343.         attrs=AttrList],
  1344.     tgif_color_info(ColorNames),
  1345.     tgif_pixels(Pixels),
  1346.     tgif_attrs(AttrList).
  1347. tgif_xpm(Obj,Parms) :-
  1348.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1349.     tgif_file_version(FileVersion),
  1350.     FileVersion =< 22, !,
  1351.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1352.     Obj = xpm(_Color,_X1,_Y1,_X2,_Y2,_UnUsedObjFill,_NumColors,
  1353.         _CharsPerPixel,_FirstPixelIsBg,_Id,_Rotation,ColorNames,Pixels,
  1354.         AttrList),
  1355.     tgif_chk_output(OutputObj,Obj),
  1356.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1357.         obj_fill=_UnUsedObjFill,num_colors=_NumColors,
  1358.         chars_per_pixel=_CharsPerPixel,
  1359.         first_pixel_is_bg=_FirstPixelIsBg,id=_Id,
  1360.         rotation=_Rotation,color_names=ColorNames,pixels=Pixels,
  1361.         attrs=AttrList],
  1362.     tgif_color_info(ColorNames),
  1363.     tgif_pixels(Pixels),
  1364.     tgif_attrs(AttrList).
  1365. tgif_xpm(Obj,Parms) :-
  1366.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1367.     tgif_file_version(FileVersion),
  1368.     FileVersion =< 25, !,
  1369.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1370.     Obj = xpm(_Color,_X1,_Y1,_X2,_Y2,_UnUsedObjFill,_NumColors,
  1371.         _CharsPerPixel,_FirstPixelIsBg,_Id,_Rotation,_ImageW,_ImageH,
  1372.         _Rotate,_Flip,ColorNames,Pixels,AttrList),
  1373.     tgif_chk_output(OutputObj,Obj),
  1374.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1375.         obj_fill=_UnUsedObjFill,num_colors=_NumColors,
  1376.         chars_per_pixel=_CharsPerPixel,
  1377.         first_pixel_is_bg=_FirstPixelIsBg,id=_Id,rotation=_Rotation,
  1378.         image_w=_ImageW,image_h=_ImageH,rotate=_Rotate,flip=_Flip,
  1379.         color_names=ColorNames,pixels=Pixels,attrs=AttrList],
  1380.     tgif_color_info(ColorNames),
  1381.     tgif_pixels(Pixels),
  1382.     tgif_attrs(AttrList).
  1383. tgif_xpm(Obj,Parms) :-
  1384.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1385.     tgif_file_version(FileVersion),
  1386.     FileVersion >= 26, !,
  1387.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1388.     Obj = xpm(_Color,_X1,_Y1,_X2,_Y2,_UnUsedObjFill,_NumColors,
  1389.         _CharsPerPixel,_FirstPixelIsBg,_Id,_Rotation,_ImageW,_ImageH,
  1390.         _Rotate,_Flip,_Locked,ColorNames,Pixels,AttrList),
  1391.     tgif_chk_output(OutputObj,Obj),
  1392.     Parms = [color=_Color,ltx=_X1,lty=_Y1,rbx=_X2,rby=_Y2,
  1393.         obj_fill=_UnUsedObjFill,num_colors=_NumColors,
  1394.         chars_per_pixel=_CharsPerPixel,
  1395.         first_pixel_is_bg=_FirstPixelIsBg,id=_Id,rotation=_Rotation,
  1396.         image_w=_ImageW,image_h=_ImageH,rotate=_Rotate,flip=_Flip,
  1397.         locked=_Locked,color_names=ColorNames,pixels=Pixels,
  1398.         attrs=AttrList],
  1399.     tgif_color_info(ColorNames),
  1400.     tgif_pixels(Pixels),
  1401.     tgif_attrs(AttrList).
  1402.  
  1403. % --------------------------------------------------------------------- %
  1404.  
  1405. tgif_group(Obj) :- tgif_group(Obj,_).
  1406.  
  1407. tgif_group(Obj,Parms) :-
  1408.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1409.     tgif_file_version(FileVersion),
  1410.     FileVersion =< 20, !,
  1411.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1412.     Obj = group(ObjList,AttrList),
  1413.     tgif_chk_output(OutputObj,Obj),
  1414.     Parms = [objs=ObjList,attrs=AttrList],
  1415.     tgif_objs(ObjList),
  1416.     tgif_attrs(AttrList).
  1417. tgif_group(Obj,Parms) :-
  1418.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1419.     tgif_file_version(FileVersion),
  1420.     FileVersion =< 25, !,
  1421.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1422.     Obj = group(ObjList,_Id,AttrList),
  1423.     tgif_chk_output(OutputObj,Obj),
  1424.     Parms = [objs=ObjList,id=_Id,attrs=AttrList],
  1425.     tgif_objs(ObjList),
  1426.     tgif_attrs(AttrList).
  1427. tgif_group(Obj,Parms) :-
  1428.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1429.     tgif_file_version(FileVersion),
  1430.     FileVersion >= 26, !,
  1431.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1432.     Obj = group(ObjList,_Id,_Locked,AttrList),
  1433.     tgif_chk_output(OutputObj,Obj),
  1434.     Parms = [objs=ObjList,id=_Id,locked=_Locked,attrs=AttrList],
  1435.     tgif_objs(ObjList),
  1436.     tgif_attrs(AttrList).
  1437.  
  1438. % --------------------------------------------------------------------- %
  1439.  
  1440. tgif_sym(Obj) :- tgif_sym(Obj,_).
  1441.  
  1442. tgif_sym(Obj,Parms) :-
  1443.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1444.     tgif_file_version(FileVersion),
  1445.     FileVersion =< 20, !,
  1446.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1447.     Obj = sym(ObjList,AttrList),
  1448.     tgif_chk_output(OutputObj,Obj),
  1449.     Parms = [objs=ObjList,attrs=AttrList],
  1450.     tgif_objs(ObjList),
  1451.     tgif_attrs(AttrList).
  1452. tgif_sym(Obj,Parms) :-
  1453.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1454.     tgif_file_version(FileVersion),
  1455.     FileVersion =< 25, !,
  1456.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1457.     Obj = sym(ObjList,_Id,AttrList),
  1458.     tgif_chk_output(OutputObj,Obj),
  1459.     Parms = [objs=ObjList,id=_Id,attrs=AttrList],
  1460.     tgif_objs(ObjList),
  1461.     tgif_attrs(AttrList).
  1462. tgif_sym(Obj,Parms) :-
  1463.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1464.     tgif_file_version(FileVersion),
  1465.     FileVersion >= 26, !,
  1466.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1467.     Obj = sym(ObjList,_Id,_Locked,AttrList),
  1468.     tgif_chk_output(OutputObj,Obj),
  1469.     Parms = [objs=ObjList,id=_Id,locked=_Locked,attrs=AttrList],
  1470.     tgif_objs(ObjList),
  1471.     tgif_attrs(AttrList).
  1472.  
  1473. % --------------------------------------------------------------------- %
  1474.  
  1475. tgif_icon(Obj) :- tgif_icon(Obj,_).
  1476.  
  1477. tgif_icon(Obj,Parms) :-
  1478.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1479.     tgif_file_version(FileVersion),
  1480.     FileVersion =< 12, !,
  1481.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1482.     Obj = icon(ObjList,_Name,_Id,AttrList),
  1483.     tgif_chk_output(OutputObj,Obj),
  1484.     Parms = [name=_Name,id=_Id,objs=ObjList,attrs=AttrList],
  1485.     tgif_objs(ObjList),
  1486.     tgif_attrs(AttrList).
  1487. tgif_icon(Obj,Parms) :-
  1488.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1489.     tgif_file_version(FileVersion),
  1490.     FileVersion =< 25, !,
  1491.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1492.     Obj = icon(ObjList,_Name,_Id,_Rotation,_Flip,AttrList),
  1493.     tgif_chk_output(OutputObj,Obj),
  1494.     Parms = [name=_Name,id=_Id,rotation=_Rotation,objs=ObjList,
  1495.         attrs=AttrList],
  1496.     tgif_objs(ObjList),
  1497.     tgif_attrs(AttrList).
  1498. tgif_icon(Obj,Parms) :-
  1499.     current_predicate(tgif_file_version,tgif_file_version(_)),
  1500.     tgif_file_version(FileVersion),
  1501.     FileVersion >= 26, !,
  1502.     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  1503.     Obj = icon(ObjList,_Name,_Id,_Rotation,_Flip,_Locked,AttrList),
  1504.     tgif_chk_output(OutputObj,Obj),
  1505.     Parms = [name=_Name,id=_Id,rotation=_Rotation,locked=_Locked,
  1506.         objs=ObjList,attrs=AttrList],
  1507.     tgif_objs(ObjList),
  1508.     tgif_attrs(AttrList).
  1509.  
  1510. % ======================== support routines =========================== %
  1511.  
  1512. tgif_clean :- tgif_clean(state).
  1513.  
  1514. tgif_real_clean :-
  1515.     tgif_clean(state),
  1516.     tgif_clean(text), tgif_clean(box), tgif_clean(oval), tgif_clean(poly),
  1517.     tgif_clean(polygon), tgif_clean(rcbox), tgif_clean(arc),
  1518.     tgif_clean(xbm), tgif_clean(xpm),
  1519.     tgif_clean(group), tgif_clean(sym), tgif_clean(icon).
  1520.  
  1521. tgif_clean(Type) :-
  1522.     current_predicate(Type,Term), functor(Term,_F,A), abolish(Type,A), fail.
  1523. tgif_clean(_Type) :- !.
  1524.  
  1525. tgif_chk_output(true,Obj) :- !,
  1526.     functor(Obj,Functor,Arity), functor(DummyObj,Functor,Arity),
  1527.     current_predicate(Functor,DummyObj),
  1528.     !, call(Obj).
  1529. tgif_chk_output(_OutputObj,_Obj).
  1530.  
  1531. % --------------------------------------------------------------------- %
  1532.  
  1533. tgif_strs([]) :- !.
  1534. tgif_strs([Str|Strs]) :- atom_chars(_Line,Str), !, tgif_strs(Strs).
  1535.  
  1536. % --------------------------------------------------------------------- %
  1537.  
  1538. tgif_obj(Obj) :- var(Obj), !, tgif_obj(_,Obj).
  1539. tgif_obj(Obj) :- functor(Obj,Functor,_Arity), tgif_obj(Functor,Obj).
  1540.  
  1541. tgif_obj(text,Obj) :- tgif_text(Obj).
  1542. tgif_obj(box,Obj) :- tgif_box(Obj).
  1543. tgif_obj(oval,Obj) :- tgif_oval(Obj).
  1544. tgif_obj(poly,Obj) :- tgif_poly(Obj).
  1545. tgif_obj(polygon,Obj) :- tgif_polygon(Obj).
  1546. tgif_obj(rcbox,Obj) :- tgif_rcbox(Obj).
  1547. tgif_obj(arc,Obj) :- tgif_arc(Obj).
  1548. tgif_obj(xbm,Obj) :- tgif_xbm(Obj).
  1549. tgif_obj(xpm,Obj) :- tgif_xpm(Obj).
  1550. tgif_obj(group,Obj) :- tgif_group(Obj).
  1551. tgif_obj(sym,Obj) :- tgif_sym(Obj).
  1552. tgif_obj(icon,Obj) :- tgif_icon(Obj).
  1553.  
  1554. tgif_objs([]) :- !.
  1555. tgif_objs([Obj|Objs]) :- tgif_obj(Obj), !, tgif_objs(Objs).
  1556.  
  1557. % --------------------------------------------------------------------- %
  1558.  
  1559. tgif_attrs([]) :- !.
  1560. tgif_attrs([Attr|Attrs]) :- tgif_attr(Attr), !, tgif_attrs(Attrs).
  1561.  
  1562. tgif_attr(Attr) :- tgif_attr(Attr,_).
  1563.  
  1564. tgif_attr(Attr,Parms) :-
  1565.     Attr = attr(_Name,_Value,_ShowAll,_NameShown,_Inherited,TextObj),
  1566.     tgif_text(TextObj),
  1567.     Parms = [name=_Name,value=_Value,show_all=_ShowAll,
  1568.         name_shown=_NameShown,inherited=_Inherited,text_obj=TextObj],
  1569.     tgif_text(TextObj).
  1570.  
  1571. % --------------------------------------------------------------------- %
  1572.  
  1573. tgif_color_info([]) :- !.
  1574. tgif_color_info([ColorChar,ColorName|ColorInfos]) :-
  1575.     atom_chars(_Char,ColorChar),
  1576.     atom_chars(_Color,ColorName),
  1577.     !, tgif_color_info(ColorInfos).
  1578.  
  1579. % --------------------------------------------------------------------- %
  1580.  
  1581. tgif_pixels([]) :- !.
  1582. tgif_pixels([_RowOfChar|Pixels]) :- !, tgif_pixels(Pixels).
  1583.